/*
    给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使得出现次数超过两次的元素只出现两次 ，返回删除后数组的新长度。
    不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
*/
class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if (nums.size() <= 2) return nums.size();

    int writeIndex = 2; // 初始化写指针，从索引2开始

    // 从索引2开始遍历数组
    for (int i = 2; i < nums.size(); i++) {
        // 如果当前元素与写指针前两个位置的元素不相同，表示可以保留
        if (nums[i] != nums[writeIndex - 2]) {
            nums[writeIndex++] = nums[i];
        }
    }
        return writeIndex;
    }
};